/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package br.gov.fasepa.sgpf.bean;

import br.gov.fasepa.sgpf.entity.Cargo;
import br.gov.fasepa.sgpf.rn.CargoRN;
import br.gov.fasepa.sgpf.util.JsfUtil;
import br.gov.fasepa.sgpf.util.SystemUtil;
import br.gov.fasepa.sgpf.util.Validator;
import java.io.IOException;
import java.io.Serializable;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import org.primefaces.context.RequestContext;

/**
 *
 * @author marcosdj
 */
@ManagedBean
@ViewScoped
public class CargoBean extends CargoRN implements Serializable{

    private Cargo cargo = new Cargo();
    private List<Cargo> cargos;
    private String titulo;
    private Validator validator = new Validator();
    private Double remuneracao = null;

    public CargoBean() {
        this.titulo = "CADASTRAR CARGO";
        if (JsfUtil.getSession().getAttribute("UC") != null) {
            Object[] array = (Object[]) JsfUtil.getSession().getAttribute("UC");
            if (array[1] instanceof Cargo) {
                this.cargo = (Cargo) array[1];
            }
            this.titulo = "ALTERAR CARGO";
        }

    }

    public String irCadCargo() {
        validator.verificaSessao();
        return "/sistema/cargo/cadastro.xhtml?faces-redirect=true";
    }

    public String irLista() {
        validator.verificaSessao();
        return "/sistema/cargo/lista.xhtml?faces-redirect=true";
    }

    public String alterar() {
        return "/sistema/cargo/cadastro.xhtml?faces-redirect=true";
    }

    public void putInSession(Cargo c) throws Exception {
        SystemUtil.updateUseCase(c, Cargo.class);
    }

    public boolean validarCampos() {
        boolean resposta = true;
        if (cargo.getNome() == null || cargo.getNome().trim().equals("")) {
            FacesContext.getCurrentInstance().
                    addMessage("msgNome",
                            new FacesMessage(FacesMessage.SEVERITY_ERROR, "O Campo Nome é obrigatório", ""));
            resposta = false;
        }

        if (cargo.getEscolaridade() == null || cargo.getEscolaridade().trim().equals("")) {
            FacesContext.getCurrentInstance().
                    addMessage("msgEscolaridade",
                            new FacesMessage(FacesMessage.SEVERITY_ERROR, "O Campo Escolaridade é obrigatório", ""));
            resposta = false;
        }

        return resposta;
    }

    public void verificaCamposDialog() throws IOException {
        if (validarCampos()) {
            RequestContext.getCurrentInstance().addCallbackParam("flag", "salvar");
        } else {
            RequestContext.getCurrentInstance().update("formCargo");
//           FacesContext.getCurrentInstance().getExternalContext().redirect("cadastro.xhtml");
        }
    }

    public void salvar() {
        if (JsfUtil.getSession().getAttribute("UC") == null) {
            save(cargo);
        } else {
            edit(cargo);
        }
        RequestContext.getCurrentInstance().addCallbackParam("flag", "ok");
        validator.verificaSessao();
        cargos = null;
        cargo = null;
        cargo = new Cargo();
    }

    public void cancelar() throws IOException {
        validator.verificaSessao();
        cargo = new Cargo();
        this.titulo = "CADASTRAR CARGO";
    }

    public void deletar() {
        delete(cargo);
        cargos = null;
        cargo = null;
        cargo = new Cargo();
        validator.verificaSessao();
    }

    public Cargo getCargo() {
        return cargo;
    }

    public void setCargo(Cargo cargo) {
        this.cargo = cargo;
    }

    public List<Cargo> getCargos() {
        if (cargos == null) {
            cargos = obtainAll(Cargo.class);
        }
        return cargos;
    }

    public void setCargos(List<Cargo> cargos) {
        this.cargos = cargos;
    }

    public String getTitulo() {
        return titulo;
    }

    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }

    public Validator getValidator() {
        return validator;
    }

    public void setValidator(Validator validator) {
        this.validator = validator;
    }

    public Double getRemuneracao() {
        return remuneracao;
    }

    public void setRemuneracao(Double remuneracao) {
        this.remuneracao = remuneracao;
    }

}
